home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / Utilities / Unix / WhosOnFirst / IconView.m < prev    next >
Text File  |  1992-12-26  |  3KB  |  144 lines

  1.  
  2. /* IconView.m */
  3.  
  4. #import <appkit/graphics.h>
  5. #import <dpsclient/psops.h>
  6. #import <dpsclient/wraps.h>
  7. #import <libc.h>
  8. #import <strings.h>
  9. #import "IconView.h"
  10. #import "ProcessManager.h"
  11.  
  12. extern id infoManager;
  13. extern id processManager;
  14.  
  15. /*===========================================================================
  16.  
  17.     File: IconView.m
  18.  
  19.     Purpose:  Each icon is the instantiation of a window object. The
  20.         docView of that window in an instantiation of this object.
  21.  
  22.         When an instance of this object gets a double click, it 
  23.         queries the InfoMgr object for an action.  It then dispatches
  24.         that action either to ProcessManager or myTalk.
  25.  
  26. ===========================================================================*/
  27.  
  28. @implementation IconView
  29.  
  30. -init
  31. {
  32.     [self setFlipped: YES];        /* flip so that TEXT comes out OK */
  33.     myTalk = [[Talk alloc] init];
  34.     [[self window] addToEventMask:NX_MOUSEDOWNMASK];
  35.     return(self);
  36. }
  37.  
  38. -free
  39. {
  40.     [myTalk free];        /* Source of an earlier memory leak. Fixed now! */
  41.     [super free];
  42.     return nil;
  43. }
  44.  
  45. - drawSelf:(const NXRect *)rects :(int)rectCount
  46. {
  47. NXRect   drawRect;
  48. NXPoint  origin;
  49.  
  50.     /* initialize a drawing rectangle */
  51.     drawRect.origin.x = drawRect.origin.y = 0.0;
  52.     drawRect.size.width = drawRect.size.height = 64.0;    /* Icon Size 64x64 */
  53.     origin.x = origin.y = 8.0;
  54.  
  55.     /* draw our bezel */
  56.     NXDrawButton(&drawRect, 0);
  57.     NXInsetRect(&drawRect, 1.0, 1.0);
  58.     NXDrawButton(&drawRect, 0);
  59.     NXInsetRect(&drawRect, -1.0, -1.0);
  60.  
  61.     PSsetgray(1.0);        /* Display user name and tty in white */
  62.     PSmoveto(9.0,17.0);
  63.     PSshow(username);
  64.     PSmoveto(9.0,32.0);
  65.     PSshow(ttyname);
  66.     PSmoveto(9.0,47.0);
  67.     PSshow(hostname);
  68.     PSstroke();
  69.  
  70.     PSsetgray(0.0);        /* Display user name and tty in black */
  71.     PSmoveto(9.0,18.0);
  72.     PSshow(username);
  73.     PSmoveto(8.0,33.0);
  74.     PSshow(ttyname);
  75.     PSmoveto(8.0,48.0);
  76.     PSshow(hostname);
  77.     PSstroke();
  78.  
  79.     return self;
  80. }    
  81.  
  82. #define MOVEMASK (NX_MOUSEUPMASK|NX_MOUSEDRAGGEDMASK)
  83. - mouseDown:(NXEvent *)theEvent
  84. {
  85.     if (theEvent->data.mouse.click == 2)
  86.     {
  87.         switch([infoManager doubleClickEvent])
  88.         {
  89.             case INFO_TALK:
  90.                 if ([infoManager confirmDoubleClick:"Initiate talk connection?"])
  91.                     [myTalk talk:username tty:ttyname host:hostname];
  92.                 break;
  93.  
  94.             case INFO_TTY_PROCESS:
  95.                 if ([infoManager confirmDoubleClick:"TTY process listing?"])
  96.                     [processManager readTTYProcesses:ttyname];
  97.                 break;
  98.  
  99.             case INFO_USER_PROCESS:
  100.                 if ([infoManager confirmDoubleClick:"User process listing?"])
  101.                     [processManager readUserProcesses:username];
  102.                 break;
  103.  
  104.             case INFO_LOGOUT:
  105.                 if ([infoManager confirmDoubleClick:"Logout?"])
  106.                     [processManager logoutTTY:ttyname];
  107.                 break;
  108.         }
  109.  
  110.     }
  111.     return self;
  112. }
  113.  
  114. /*===========================================================================
  115.  
  116.     The following methods set various instance variables for this 
  117.     object.
  118.  
  119. ===========================================================================*/
  120.  
  121. - iconSetTty: (const char *) tty
  122. {
  123.     strcpy(ttyname, tty);    /* Set tty name */
  124.     return(self);
  125. }
  126.  
  127. - iconSetName: (const char *) name
  128. {
  129.     strcpy(username, name);    /* Set user name */
  130.     username[8] = '\000';
  131.     return(self);
  132. }
  133.  
  134. - iconSetHostName: (const char *) name
  135. {
  136.     strcpy(hostname, name);    /* Set user name */
  137.     return(self);
  138. }
  139.  
  140. @end
  141.  
  142.  
  143.  
  144.